home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
kcl
/
kcl.lha
/
h
/
lex.h
< prev
next >
Wrap
Text File
|
1987-06-04
|
1KB
|
69 lines
/*
(c) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved.
Copying of this file is authorized to users who have executed the true and
proper "License Agreement for Kyoto Common LISP" with SIGLISP.
*/
/*
lex.h
lexical environment
*/
object *lex_env;
object Sfunction;
object Smacro;
object Stag;
object Sblock;
/*
VS
| |
|---------------|
lex_env ------> | lex-var | : lex_env[0]
|---------------|
| lex-fd | : lex_env[1]
|---------------|
| lex-tag | : lex_env[2]
|---------------|
| |
| |
| |
lex-var: (symbol value) ; for local binding
(.... or ....)
(symbol) ; for special binding
lex-fd: (fun-name 'FUNCTION' function)
(.... or ...)
(macro-name 'MACRO' expansion-function)
lex-tag: (tag 'TAG' frame-id)
(.... or ....)
(block-name 'BLOCK' frame-id)
where 'FUN' is the LISP object with pname FUN, etc.
*/
#define lex_copy() ihs_top->ihs_base = vs_top; \
vs_push(lex_env[0]); \
vs_push(lex_env[1]); \
vs_push(lex_env[2]); \
lex_env = vs_top - 3
#define lex_new() ihs_top->ihs_base = vs_top; \
lex_env = vs_top; \
vs_top[0] = vs_top[1] = vs_top[2] = Cnil; \
vs_top += 3
#define lex_var_sch(name) assoc_eq((name),lex_env[0])
#define lex_fd_sch(name) assoc_eq((name),lex_env[1])